#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
using Cephei.QL.Math;
namespace Cephei.QL.Math.Optimization
{
     // <summary> 
	// ! Base class for line search
	// </summary>
    [Guid ("0CD25499-4ED3-4152-B30E-8BE63BBC5BC2"),ComVisible(true)]
	public interface ILineSearch 
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 Double LastFunctionValue {get;}
        
		 Cephei.QL.Math.IArray LastGradient {get;}
        
		 Double LastGradientNorm2 {get;}
        
		 Cephei.QL.Math.IArray LastX {get;}
        
		 Cephei.QL.Math.IArray SearchDirection {get;}
        
		 Boolean Succeed {get;}
        
		 Double Update(Cephei.QL.Math.IArray p_params, Cephei.QL.Math.IArray direction, Double beta, Cephei.QL.Math.Optimization.IConstraint constraint);
    }

    // <summary> 
	// ! Base class for line search Factory
	// </summary>
   	[ComVisible(true)]
    public interface ILineSearch_Factory // : Collection_Factory<ILineSearch, ICell<ILineSearch>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
    }
}

